using System;
using System.Collections.Generic;

namespace PolePositionMobile.Entities
{
    /// <summary>
    /// An entity representing a visit
    /// </summary>
	[Serializable]
	public class EVisit
	{
        //Created by: VMCoder
        //Creation date: -
        //Last updated by: VMCoder
        //Last update: 2008.04.10

        #region Private Members
		Int32 m_VisitId;
        Int32 m_VisitTypeFk = Int32.MinValue;
        double m_Latitude;
        double m_Longitude;
        double m_Altitude;
        Int32 m_SatelliteCount;
        DateTime m_SatelliteTime;
        bool m_SolutionAvailable;
        Int32 m_TopTypeFk = Int32.MinValue;
        EData m_Data;
        EImage[] m_Images;
        List<Int32> m_PolesToDelete;
        List<Int32> m_ImagesToDelete;
        List<string> m_FilesToDelete;
        Int32 m_StructureServerID;
        DateTime m_UploadedDate;
        #endregion Private Members

		#region Properties
        public Int32 VisitId
        {
            get { return m_VisitId; }
            set { m_VisitId = value; }
        }
        public Int32 VisitTypeFk
        {
            get { return m_VisitTypeFk; }
            set { m_VisitTypeFk = value; }
        }
        public double Latitude
        {
            get { return m_Latitude; }
            set { m_Latitude = value; }
        }
        public double Longitude
        {
            get { return m_Longitude; }
            set { m_Longitude = value; }
        }
        public double Altitude
        {
            get { return m_Altitude; }
            set { m_Altitude = value; }
        }
        public Int32 SatelliteCount
        {
            get { return m_SatelliteCount; }
            set { m_SatelliteCount = value; }
        }
        public DateTime SatelliteTime
        {
            get { return m_SatelliteTime; }
            set { m_SatelliteTime = value; }
        }
        public bool SolutionAvailable
        {
            get { return m_SolutionAvailable; }
            set { m_SolutionAvailable = value; }
        }
        public Int32 TopTypeFk
        {
            get { return m_TopTypeFk; }
            set { m_TopTypeFk = value; }
        }
        public EData Data
        {
            get { return m_Data; }
            set { m_Data = value; }
        }
        public EImage[] Images
        {
            get { return m_Images; }
            set { m_Images = value; }
        }
        public List<Int32> PolesToDelete
        {
            get { return m_PolesToDelete; }
            set { m_PolesToDelete = value; }
        }
        public List<Int32> ImagesToDelete
        {
            get { return m_ImagesToDelete; }
            set { m_ImagesToDelete = value; }
        }
        public List<string> FilesToDelete
        {
            get { return m_FilesToDelete; }
            set { m_FilesToDelete = value; }
        }
        public Int32 StructureServerID
        {
            get { return m_StructureServerID; }
            set { m_StructureServerID = value; }
        }
        public DateTime UploadedDate
        {
            get { return m_UploadedDate; }
            set { m_UploadedDate = value; }
        }
        #endregion Properties

		#region Constructors
		public EVisit()
		{
			m_VisitId = Int32.MinValue;
		}
        public EVisit(Int32 visitId)
			: this()
		{
            m_VisitId = visitId;
		}
        public EVisit(Int32 visitId, Int32 visitTypeFk, double latitude, double longitude, double altitude, Int32 satelliteCount, DateTime satelliteTime, bool solutionAvailable, Int32 topTypeFk)
            : this(visitId)
		{
            m_VisitTypeFk = visitTypeFk;
            m_Latitude = latitude;
            m_Longitude = longitude;
            m_Altitude = altitude;
            m_SatelliteCount = satelliteCount;
            m_SatelliteTime = satelliteTime;
            m_SolutionAvailable = solutionAvailable;
            m_TopTypeFk = topTypeFk;
        }
		#endregion Constructors
	}
}
